import { set } from 'lodash-es';
import { $each } from '../index';
/**
 * 设置图表的样式区分
 * 1、雷达图
 * 2、其他图表
 * 3、散点图
 * 4、气泡/飞线地图
 * @param options
 */
// 图表设置样式
function handleEchartSeriesStyle(options) {
    const { seriesValue, generateOption, indexNeed, currentLegend, style, seriesIndex } = options;
    seriesValue.map((dataItem, dataIndex) => {
        for (const key in generateOption) {
            $each(indexNeed, (item) => {
                // 当前遍历的原始字段名称为颜色维度 除了雷达图2其他的雷达图不配置条件格式
                if (currentLegend) {
                    // 条件选择的是颜色维度时，需判断seriesIndex，同一个颜色维度的数据都在一个 seriesItem中
                    seriesIndex === item && style[key] && set(dataItem, generateOption[key], style[key]);
                } else {
                    // 则统一设置属性 设置的颜色不为空才执行
                    dataIndex === item && style[key] && set(dataItem, generateOption[key], style[key]);
                }
            });
        }
        return dataItem;
    });
}
// 雷达图设置样式
function handleRadarSeriesStyle(options) {
    const { seriesValue, generateOption, style, indexNeed, seriesIndex, currentLegend, currentYAxis } = options;
    const data = seriesValue[0];
    for (const key in generateOption) {
        $each(indexNeed, (item) => {
            if (currentLegend || currentYAxis) {
                // 条件选择的是颜色维度时，需判断seriesIndex，同一个颜色维度的数据都在一个 seriesItem中
                seriesIndex  === item && style[key] && set(data, generateOption[key], style[key]);
            } else {
                // 判断当前的数据组中值是否存在
                const existValue = data.value[item];
                // 如果是维度，由于雷达图是共用维度，所以如果满足条件的下标值存在说明所有数据都满足
                existValue && style[key] && set(data, generateOption[key], style[key]);
            }
        });
    }
}
// 气泡、飞线地图
function handleScatterMapSeriesStyle(options) {
    const { seriesValue, generateOption, indexNeed, style } = options;
    seriesValue.data.map((dataItem, dataIndex) => {
        for (const key in generateOption) {
            $each(indexNeed, (item) => {
            // 则统一设置属性 设置的颜色不为空才执行
            dataIndex === item && style[key] && set(dataItem, generateOption[key], style[key]);
            });
        }
        return dataItem;
    });
}
export const setSeriesConditionStyle = {
    default: handleEchartSeriesStyle,
    radar: handleRadarSeriesStyle,
    scatter: handleEchartSeriesStyle,
    scatterMap: handleScatterMapSeriesStyle,
};
